home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / Compiler / comp-defn.em < prev    next >
Lisp/Scheme  |  1993-02-02  |  3KB  |  104 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: comp-defn
  4. ;; Date: Wed Jan 29 21:51:30 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;   What is  produced by a compilation
  9. ;;   and is read by the load/link phase
  10.  
  11. (defmodule comp-defn
  12.   (standard0
  13.    list-fns
  14.    
  15.    comp-utl
  16.    )
  17.   ()
  18.   (expose comp-utl)
  19.   ;; Target for compilation
  20.  
  21.   (defstruct compile-unit ()
  22.     ;; a-list of values
  23.     ((statics initarg statics
  24.           reader compile-unit-statics)
  25.      (name initarg name 
  26.        reader compile-unit-name)
  27.      (local-count initarg local-count
  28.           reader compile-unit-local-count)
  29.      (byte-codes initarg byte-codes
  30.          reader compile-unit-byte-codes)
  31.      ;; Import format is (module-name name)
  32.      (imports initarg imports 
  33.           reader compile-unit-imports)
  34.      ;; list of ids
  35.      (exports initarg exports
  36.           reader compile-unit-exports)
  37.      (length initarg length
  38.          reader compile-unit-length)
  39.      (local-names initarg local-names
  40.           reader compile-unit-local-names))
  41.     constructor make-compile-unit)
  42.  
  43.   ;; Target for self-contained-code
  44.   (defstruct sc-compile-unit ()
  45.     ((statics initarg statics 
  46.           reader sc-statics)
  47.      (code initarg code 
  48.        reader sc-code)
  49.      (slots initarg nslots
  50.           reader sc-nslots)
  51.      (length initarg length 
  52.          reader sc-length)
  53.      (name-list initarg names
  54.         reader sc-names)
  55.      (dependencies initarg dependencies
  56.            reader sc-dependencies))
  57.     constructor make-sc-unit)
  58.   
  59.   (defgeneric unit-name (x))
  60.   (defmethod unit-name ((x compile-unit))
  61.     (bytecode-file-name (compile-unit-name x)))
  62.  
  63.   (defmethod unit-name ((x sc-compile-unit))
  64.     (sc-file-name (car (sc-names x))))
  65.  
  66.   (export compile-unit make-compile-unit compile-unit-statics
  67.       compile-unit-name
  68.       compile-unit-local-count compile-unit-byte-codes 
  69.       compile-unit-imports compile-unit-exports
  70.       compile-unit-length
  71.       sc-compile-unit 
  72.       sc-code sc-length
  73.       sc-statics sc-names
  74.       sc-nslots
  75.       sc-dependencies
  76.       unit-name)
  77.   
  78.   (defconstant *unresolved-label* '%%-unresolved-%%)
  79.   (defconstant *link-handle* '%%-link-me-%%)
  80.   (defconstant *long-label* '%%-big-arg-%%)
  81.   (defconstant *local-module-name* '%%-me-local--%%)
  82.   (defconstant *static-handle* '%%-static-%%)
  83.  
  84.   (defun the-unresolved-handle () 
  85.     *unresolved-label*)
  86.  
  87.   (defun the-long-handle ()
  88.     *long-label*)
  89.  
  90.   (defun the-link-handle ()
  91.     *link-handle*)
  92.  
  93.   (defun the-local-handle ()
  94.     *local-module-name*)
  95.  
  96.   (defun the-static-handle ()
  97.     *static-handle*)
  98.  
  99.   (export the-long-handle the-link-handle the-unresolved-handle
  100.       the-local-handle the-static-handle)
  101.   
  102.   ;; end module
  103.   )
  104.